package lectores;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.xml.sax.SAXException;

public abstract class LectorConvenios {
    
    public static final int FILTRO_BONOS_PRODUCCION = 1;
    public static final int FILTRO_BONOS_CALIDAD = 2;
    
    HashMap<String, Integer> mapeoDañosVida = null;
    HashMap<String, Integer> mapeoColumna = null;
    
    void creaMapeoDañosVida() {
        mapeoDañosVida = new HashMap();
        mapeoDañosVida.put("SEYCOS4", 0);
        mapeoDañosVida.put("SEYCOS5", 0);
        mapeoDañosVida.put("SEYCOS6", 0);
        mapeoDañosVida.put("SEYCOS7",0);
        mapeoDañosVida.put("SEYCOS9", 2);
        mapeoDañosVida.put("SEYCOS11", 0);
        mapeoDañosVida.put("SEYCOS12", 0);
        mapeoDañosVida.put("SEYCOS13", 1);
        mapeoDañosVida.put("SEYCOS14", 1);
        mapeoDañosVida.put("SEYCOS33", 1);
        mapeoDañosVida.put("SEYCOS34", 1);
        mapeoDañosVida.put("SEYCOS31", 1);
        mapeoDañosVida.put("SEYCOS36", 1);
        
        mapeoDañosVida.put("SIVISABE4", 0);
        mapeoDañosVida.put("SIVISABE5", 0);
        mapeoDañosVida.put("SIVISABE6", 0);
        mapeoDañosVida.put("SIVISABE7", 0);
        mapeoDañosVida.put("SIVISABE9", 2);
        mapeoDañosVida.put("SIVISABE11", 1);
        mapeoDañosVida.put("SIVISABE12", 1);
        mapeoDañosVida.put("SIVISABE13", 1);
        mapeoDañosVida.put("SIVISABE14", 1);
        mapeoDañosVida.put("SIVISABE33", 1);
        mapeoDañosVida.put("SIVISABE34", 1);
        mapeoDañosVida.put("SIVISABE31", 1);
        mapeoDañosVida.put("SIVISABE36", 1);
        
    }
    
    void creaMapeoColumnas(){
        mapeoColumna = new HashMap();
        
        //Se insertan las entradas del mapeo de daños
        mapeoColumna.put("04", 10);
        mapeoColumna.put("05", 4);
        mapeoColumna.put("06", 9);
        mapeoColumna.put("07", 11);
        mapeoColumna.put("09", 3);
        mapeoColumna.put("011", 5);
        mapeoColumna.put("012", 6);
        mapeoColumna.put("112", 14);
        mapeoColumna.put("113", 12);
        mapeoColumna.put("114", 13);
        mapeoColumna.put("133", 1);
        mapeoColumna.put("134", 8);
        mapeoColumna.put("131", 2);
        mapeoColumna.put("136", 7);           
    }
    
    int clasificaRamo(String so, String id_ramo_cont, File archivoExcel) throws ExcelMalFormadoException {
        String key = "";
        try {
            key = so + (int)Double.parseDouble(id_ramo_cont);
        } catch(NumberFormatException nfe) {
            throw new ExcelMalFormadoException(ExcelMalFormadoException.FALTA_COLUMNA, archivoExcel);
        }
        Integer ramo = mapeoDañosVida.get(key);
        if(ramo == null) {
            return -1;
        }
        return ramo;
    }
    
    int columnaCorresp(String so, String id_ramo_cont) {
        if(so.contentEquals("SEYCOS"))
            so = "0";
        else if(so.contentEquals("SIVISABE"))
            so = "1";
        String key = so + id_ramo_cont;
        Integer columna = mapeoColumna.get(key);
        if(columna == null) {
            return -1;
        }
        return columna;
    }
    
    abstract void cargaArchivo()
            throws InvalidFormatException, FileNotFoundException, IOException,
            SQLException, SAXException, OpenXML4JException, ParserConfigurationException,
            ExcelMalFormadoException;
        
    public abstract void insertaRegistro(String datos, int renglon) throws SQLException, ExcelMalFormadoException;
}